package com.sdleyou.treepro.common.service;

import com.sdleyou.treepro.common.model.dto.ExchangeDTO;
import com.sdleyou.treepro.common.model.dto.WellDTO;
import com.sdleyou.treepro.common.model.vo.UserTreePlantVO;
import com.sdleyou.treepro.common.model.vo.UserTreeVO;

import java.util.List;
import java.util.Map;

public interface UserTreeManager {

    /**
     * 树木类型列表
     *
     * @return
     */
    UserTreeVO getTreeTypeList();

    /**
     * 用户选择种树类型
     */
    Map<String, String> userPlant(String UserId, String treeType);

    /**
     * 用户获取树木信息
     */
    UserTreeVO getTreeInfoById(String userId, String treeId);

    /**
     * 计算减少成长值
     */
    Integer setSubValue(String userId, String treeId);

    /**
     * 增加成长值
     */
    Map<String, String> addValue(String userId, String treeId, Double value);

    /**
     * 减少成长值
     */
    Map<String, String> subValue(String userId, String treeId);

    /**
     * 更新树木养殖信息
     */
    Map<String, String> addTreePlantInfo(String userId, String treeId, String userPropId, String propId, String info);

    /**
     * 查看树木养殖信息
     */
    List<UserTreePlantVO> getTreePlantInfo(String userId, String treeId);

    /**
     * 生成用户树木关系记录
     *
     * @param wellDTO
     */
    void createUserTree(WellDTO wellDTO, String plantType);

    /**
     * 用户通过能量兑换树苗
     *
     * @param exchangeDTO
     */
    void exchangeTree(ExchangeDTO exchangeDTO);

    /**
     * 用户选择游戏内养殖的树苗
     *
     * @param userId
     * @param treeId
     */
    void initGameTree(String userId, String treeId);

    /**
     * 减少树上虫子的数量
     */
    void subWormNum(String userId, String treeId);

    /**
     * 减少或保留虫子减少的成长值
     */
    void changePestStatus(String userId, String treeId, String type);
}
